package com.suixun.service;

import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;

import com.suixun.Result;
import com.suixun.controller.DeviceManage;
import com.suixun.entity.DeviceInfo;
import com.suixun.entity.LogOperation;
import com.suixun.entity.MqUseage;
import com.suixun.entity.form.ParamForm;
import com.suixun.entity.page.PageModel;
import com.suixun.excel.model.StudentModel;
import com.suixun.vo.ChangeDeviceVo;
import com.suixun.vo.DeviceVO;
import com.suixun.vo.UnbindDeviceVo;

public interface DeviceService {

	// 查询所有设备列表
	List<DeviceVO> queryDevice(ParamForm paramForm);

	// 分页查询设备列表
	PageModel<DeviceVO> queryDevicelistPage(ParamForm paramForm);

	// 设备回收
	int recycleDevice(String imei);

	String recycleToReserve(String imei, String province, String city, String town);

	int modifyDevicePhone(DeviceInfo info);

	int modifyCardId(DeviceInfo info);

	int modifyEndTime(DeviceInfo info);

	PageModel<LogOperation> queryDeviceHistoryPage(ParamForm paramForm);

	Integer unbindDevice(ParamForm paramForm);

	Integer addLogOperation(LogOperation logOperation);

	HSSFWorkbook exportDeviceList(ParamForm device) throws Exception;

	String synJxtBaby(String mdtid);

	Object bindwhitecardBatch(HSSFWorkbook wb);

	Object getlostreportdevice(int pagenoint, int pagesizeint, int devicetype, int typeint);

	Result exportlostreportdevicelist(int flagint, DeviceManage deviceManage);

	Result unbindwhitecardBatch(HSSFWorkbook wb);

	Result changewhitecardBatch(HSSFWorkbook wb);
	String batchAddStudent(Workbook wb) throws Exception;

	void addStudent(StudentModel student, int index);

	List<DeviceVO> getDeviceListByPeopletel(String peopletel);

	Integer getFirewallByMdtid(String mdtid);
	
	String batchChangeCard(Workbook wb) throws Exception;

	Result logoffafterlost(String lostreportids/*,String mdtids*/);

	Result getlostinfobymdtid(String mdtid);
	
	String modifyDevicePrice(String mdtid, String promotePrice, String packagePrice);

	/**
	 * 解绑多个设备
	 * @param unbindDeviceVo
	 * @return
	 */
	Integer unbindManyDevice(List<UnbindDeviceVo> unbindDeviceVo);

	/**
	 * 跟换多个考勤卡
	 * @param vo 
	 * @return
	 */
    Integer changeDevice(List<ChangeDeviceVo> list);

    /**
     * 跟换考勤卡
     * @param vo
     * @return
     */
    Integer changeDevice(ChangeDeviceVo vo);

    /**
     * 根据考勤卡id获取设备mdtid和设备类型
     * @param cardid 勤卡id
     * @return type:考勤卡类型,mdtid:编号
     */
    Map<String, String> getMdtidType(String cardid);
    
    /**
     * 
     * 功能描述: 发送指令
     * @param mdtid
     * @param type 1-通话时间（单位：分钟），2-使用流量（单位：kb）
     */
    void sendInstructions(String mdtid, Integer type);
    
    /**
     * 
     * 功能描述: 查询本月设备消息（通话时长，通信流量）
     * @param type 1-通话时间（单位：分钟），2-使用流量（单位：kb）
     * @param mdtid 设备号
     * @return
     */
    MqUseage selectCurrentMonthMessage(Integer type, String mdtid);
    /**
     * 
     * 功能描述: 通过objectId查询本月设备信息
     * @param type 1-通话时间（单位：分钟），2-使用流量（单位：kb）
     * @param objectId
     * @return
     */
    MqUseage selectCurrentMonthMessage(Integer type, Integer objectId);
    /**
     * 
     * 功能描述: 查询本月设备消息列表（通话时长，通信流量）
     * @param mdtid
     * @return
     */
    List<MqUseage> listCurrentMonthMessage(String mdtid);
    
    /**
     * 
     * 功能描述: 查询本月设备消息列表（通话时长，通信流量）
     * @param objectId
     * @return
     */
    List<MqUseage> listCurrentMonthMessage(Integer objectId);
    
}
